{\fad(200,200)}翻译/压制/字幕制作:HAF半个水果
{\fad(200,200)}关闭 Windows 蓝屏
{\fad(200,200)\pos(962.84,908.27)}大家好!好久不见了。在这个视频中,我将会关闭蓝屏死机画面
{\fad(200,200)\pos(948.66,1048.59)}并展示当Windows崩溃时幕后发生的情况
{\fad(200,200)\pos(945.82,908.28)}蓝屏死机(Blue Screen of Death,简称BSOD),又称作错误检查,实际上是一个在核心模式下运行的程序
{\fad(200,200)\pos(957.16,1048.59)}因此,从理论上讲,蓝屏死机也可能崩溃。这种情况虽然罕见,但确实会发生
{\fad(200,200)\pos(952.91,905.44)}当 Windows 向你抛出蓝屏时,它知道错误是不可恢复的,并且可能会造成永久性损害
{\fad(200,200)\pos(1239.35,1048.59)}除非有编写糟糕的驱动程序或恶意软件安装...
{\fad(200,200)\pos(961.42,902.61)}确实可以通过自定义驱动程序来禁用蓝屏,但这并不是在生产环境中
{\fad(200,200)\pos(960.01,1052.85)}想要做的事情——它可能会造成损害。不过,这正是我们在这里的原因
{\fad(200,200)\pos(933.07,912.54)}接下来使用一个由NSG650编写的NoMoreBugCheck这个100行代码的驱动程序来禁用蓝屏
{\fad(200,200)\pos(952.93,1057.11)}这个简单的驱动程序通过挂钩内核中调用蓝屏的程序来有效地禁用蓝屏
{\fad(200,200)\pos(941.59,908.29)}实际上,内核中有三个程序会触发蓝屏
{\fad(200,200)\b1\c&HFFFFFF&\pos(948.68,1061.35)}KeBugCheck()、KeBugCheckEx() {\r}和内部的 {\b0\c&HFFFFFF&}KeBugCheck2()
{\fad(200,200)\pos(933.08,892.69)}有什么不同呢?{\b1\c&HFFFFFF&}KeBugCheck(){\r} 和 {\b0\c&HFFFFFF&}KeBugCheckEx()
{\fad(200,200)\pos(937.33,1059.93)}都是 {\b1\c&HFFFFFF&}KeBugCheck2(){\r} 的包装函数,只不过前者将所有蓝屏参数预设为0
{\fad(200,200)\b1\c&HFFFFFF&\pos(948.67,899.77)}KeBugCheck2() {\r}是实际处理崩溃的内部函数。在 Windows XP中,它是一个大约600行的
{\fad(200,200)\pos(971.35,1051.43)}if-else/switch-case混乱代码,这很合理。每次崩溃都必须以不同的方式处理
{\fad(200,200)\pos(957.17,906.86)}NSG的小驱动程序只挂钩了包装函数,因此 {\b1\c&HFFFFFF&}KeBugCheck2(){\r} 保持原样
{\fad(200,200)\pos(945.83,1059.94)}任何从内核内部发起的崩溃都将不受影响地继续进行
{\fad(200,200)\pos(964.26,1057.11)}如果系统运行正常,内核从内部导致系统崩溃的情况并不常见,但确实会发生,并且它会直接调用内部函数
{\fad(200,200)\pos(949.85,899.83)}CrashOnCtrlScroll 是一个经典的驱动程序引发的崩溃示例
{\fad(200,200)\pos(962.85,1055.69)}NoMoreBugCheck 将轻松应对这种情况。所以,让我们继续尝试一下吧!
{\fad(200,200)\pos(950.52,911.96)}由于这是一个驱动程序,我们需要创建一个服务来执行其代码
{\fad(200,200)\pos(939.56,1051.58)}可以使用命令行 SC 工具或成熟的工具如 OsRLoader 来完成
{\fad(200,200)\pos(942.3,911.96)}我将驱动程序放在 C:\ 驱动器的根目录下以便于访问,因此将该路径
{\fad(200,200)\pos(958.74,1055.69)}输入到“驱动程序路径”框中。显示名称可以是任何内容,设置驱动程序在启动时自动运行
{\pos(721.71,980.19)}注册服务
{\pos(1046.28,982.93)}启动服务
{\fad(200,200)\pos(960.11,910.59)}现在启动服务有点早,因为驱动程序未签名
{\fad(200,200)\pos(969.7,1054.32)}获取驱动程序签名相当昂贵,因此我们将改为在 BCD 中启用测试签名标志
{\fad(200,200)\pos(961.48,906.49)}启用测试签名后,我们可以重新启动,并期望属性设置为“自动”的服务
{\fad(200,200)\pos(923.13,1046.11)}能够正常运行。否则,它可能会在启动时蓝屏
{\fad(200,200)\pos(931.35,1048.85)}系统已成功启动,CrashOnCtrlScroll 停止工作!我无法再手动触发崩溃了
{\fad(200,200)\pos(916.29,903.75)}为了确认这并非偶然,我决定多按几次并稍等片刻
{\fad(200,200)\pos(931.35,1050.22)}因为有时崩溃会稍微延迟一点,但一切都很顺利!驱动程序工作正常
{\fad(200,200)\pos(951.89,1054.33)}我们现在可以说是“超越了蓝屏死机”。系统在应该崩溃的时候没有崩溃。现在让我们尝试一些调皮的事情
{\pos(327.3,241.03)}Crash On CtrlScroll 没有效果
{\fad(200,200)\pos(913.55,903.76)}我首先想到的是尝试终止关键的 Windows 进程
{\fad(200,200)\pos(945.05,1052.96)}但首先,必须移除 Windows Defender,因为它会阻止关键进程的终止
{\pos(1109.27,898.06)}在 X 上关注 enderman
{\fad(200,200)\pos(945.05,1052.96)}完全移除 Windows Defender 后,我们现在可以终止关键系统进程而不会受到任何干预
{\fad(200,200)\pos(957.38,899.65)}让我们尝试终止 CSRSS 进程
{\fad(200,200)\pos(969.71,1048.85)}为了方便起见,我将使用 Process Hacker
{\fad(200,200)\pos(939.58,902.39)}好吧,什么也没发生!(︶^︶)如果是在没有 NoMoreBugcheck 的情况下这样做
{\fad(200,200)\pos(946.43,1048.86)}系统会立即抛出蓝屏。相反,Process Hacker现在被冻结了(无响应)
{\fad(200,200)\pos(945.06,907.87)}现在没有办法终止 Process Hacker 本身。它卡在“退出”状态
{\fad(200,200)\pos(934.11,1047.49)}CSRSS 仍在运行,但内存使用量被削减了一点
{\fad(200,200)\pos(936.85,913.35)}我们可以运行另一个实例并继续终止进程,完全没有问题
{\fad(200,200)\pos(964.24,1050.23)}除非调用来自内核内部,否则它永远不会蓝屏,因为在那里进程没有被挂钩
{\fad(200,200)\pos(951.91,905.13)}最终,如果你杀死了足够多的进程并使系统不稳定,它将从内部蓝屏
{\fad(200,200)\pos(917.67,1055.7)}但你必须为此努力。否则,它工作得“很好”
{\fad(200,200)\pos(917.67,1055.7)}尝试终止会话管理器和一些随机服务。虽然没有崩溃,但这里已经红温了起来
{\fad(200,200)\pos(927.26,239.88)}RPC 服务和 LSA 服务已停止工作,因此我既不能关机,也不能注销
{\pos(1539.29,401.17)}*RPC:远程过程调用,指进程间的功能调用\N
进程和进程既可以在于同一台计算机\N
也可以存在于不同的计算机上*
{\pos(1522.86,532.58)}*LSA:本地安全机构,安全子系统的核心组件\N
负责管理系统的交互式登录*
{\pos(1029.84,594.18)}Windows 无法访问指定的设备、路径或文件。您可能没有访问该项目的适当权限
{\fad(200,200)\fscx93\fscy96\pos(969.71,1052.96)}系统设置为稍后崩溃,现在几乎无法使用。但我们设法避免了蓝屏。这表明蓝屏实际上是我们的朋友(❁´◡`❁)
{\fad(200,200)\pos(921.78,1055.7)}通过利用 RPC 服务的终止,可以实现更奇特的载荷。我们可以终止 winlogon 而不会被踢出会话
{\fad(200,200)\pos(913.57,913.35)}我们失去了运行任何和所有应用程序的能力,但它看起来很酷
{\fad(200,200)\pos(920.41,1054.33)}系统显然已经崩溃,但它不会蓝屏,在 NMBC 下可以持续相当长的时间
{\pos(1535.18,865.21)}*NMBC:就是前面提到的 NoMoreBugcheck*
{\fad(200,200)\pos(949.17,911.97)}感谢观看!我希望你学到了一些新东西。很抱歉这么长时间没有上传
{\fad(200,200)\pos(957.39,1052.96)}我知道我一直在偷懒。在速通这个学期之后,我仍然有一些2024年的大计划
{\fad(200,200)\pos(951.91,911.97)}我现在有两份工作和大学的事情要处理,这一直让我头疼
{\fad(200,200)\pos(975.19,1057.07)}然而,我会尽最大努力为你制作一些内容来观看。我还没死,远非如此 {\b1}(σ`д′)σ
{\pos(1514.63,844.67)}*HAF:本UP也获得了早八的特权 (っ °Д °;)っ*
{\fad(200,200)\pos(971.08,133.12)}原标题:What happens behind the Blue Screen of Death. 原作者:Enderman
{\fad(200,200)\pos(971.08,133.12)}原视频上传日期:2024年10月16日
{\fad(200,200)\pos(976.56,445.21)\fscx317\fscy306}在 Youtube 上关注
{\fad(200,200)\pos(956.02,606.73)}翻译/压制/字幕制作:HAF半个水果
{\fad(200,200)\pos(956.02,606.73)}字幕制作不易,喜欢的话支持一下我吧!